Various forms of network-based storage systems exist today. These forms include network attached storage (NAS), storage area networks (SANs), and others. Network storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up critical data (e.g., by data mirroring), and the like.
A network-based storage system typically includes at least one storage server node (“node”), which is a processing system configured to store and retrieve data on behalf of one or more client processing systems (“clients”). A storage server node may be a file server, which is sometimes called a “filer”. A filer operates on behalf of one or more clients to store and manage shared files. The files may be stored in a storage subsystem that includes one or more arrays of mass storage devices, such as magnetic or optical disks or tapes, by using RAID (Redundant Array of Inexpensive Disks). Hence, the mass storage devices in each array may be organized into one or more separate RAID groups. A storage server node provides clients with file-level access. Some storage server nodes may additionally provide block-level access.
A plurality of storage server nodes may be interconnected to provide a storage system environment. Each storage server node may be configured to manage and provide access to (to “service”) one or more volumes, with each volume storing files of one or more types (e.g., regular data files or directories). Conventionally, directories are usually stored on a small number of volumes serviced by a particular storage server node. As a result, the storage server node attempting to service the directory access requests may become overburdened, and the overall system speed and performance may be degraded. In particular, Common Internet File System (CIFS) traffic tends to send requests that specify a full path from the root, rather than just a filename within a parent directory. That means a single CIFS call involves the resolution of multiple directory names before the final filename can be resolved. The directories close to the root in the hierarchy may be resolved repeatedly by different CIFS requests. The repeated access to the same directories further increases the workload of the storage server node servicing the directory access request and causes the overall system performance to degrade.